home *** CD-ROM | disk | FTP | other *** search
/ ftp.hypersurf.com / ftp.hypersurf.com.tar / ftp.hypersurf.com / pub / mac / news / yanw425.sit.bin / ya-nw 4.2.5 / Docs / YA-NewsWatcher User Guide < prev    next >
Text File  |  1999-10-04  |  105KB  |  830 lines

  1. Yet Another NewsWatcher User Guide
  2.  
  3.                                    
  4.  
  5. Table of Contents
  6.  
  7. Part One: Introduction and Overview
  8.     What should I read?
  9.     What is Yet Another NewsWatcher?
  10.     What's in this distribution?
  11.     Program Information for Yet Another NewsWatcher
  12.     Program Information for Original NewsWatcher
  13.     Problems?
  14.     Summary of New or Changed Features
  15.     Using Multiple News Server Connections
  16. Part Two: Files and Folders
  17.     The Files
  18.     Folders and File Locations
  19. Part Three: Filtering
  20.     How Filters Work
  21.     Preferences
  22.     Creating and Editing Filters
  23.     Sundry Notes
  24.     Live Filtering
  25. Part Four: Subject Windows, and Sorting and Threading
  26.     Introduction
  27.     Preferences
  28. Part Five: Messages and Personalities
  29.     Introduction
  30.     Preferences
  31. Part Six: Newsgroup Settings
  32.     Introduction
  33. Part Seven: Character Sets
  34.     Introduction
  35.     Translator files
  36.     Preferences
  37.     Table File Format
  38.     Writing a Translator Plugin
  39.     Thank you!
  40. Part Eight: Queued Downloading and Sending
  41.     Introduction
  42.     Preferences
  43.     Operation
  44. Part Nine: Binary Decoding
  45.     Preferences
  46.     Comments on Base64 Decoding
  47.     Setting the Type and Creator of Decoded Files
  48.     Comments on Uudecoding
  49. Part Ten: Binary Posting
  50.     Introduction
  51.     Preferences
  52. Part Eleven: Scripting
  53.     YA-NewsWatcher Suite
  54.  
  55. Part One: Introduction and Overview
  56.  
  57. What should I read?
  58.  
  59. Please read all of this document thoroughly before trying to run Yet Another NewsWatcher for the first time. You should also have read and be familiar with the user guide for the original NewsWatcher program by John Norstad.
  60.  
  61. What is Yet Another NewsWatcher?
  62.  
  63. Yet Another NewsWatcher is a Usenet newsreader application for Macintosh. Its features include automatic viewing of downloaded images, binary posting, flexible article filtering (kill files) and sorting, reference-based threading, and comprehensive multiple character set support for reading and posting in non-English language and non-Latin alphabet newsgroups.
  64.  
  65. What's in this distribution?
  66.  
  67. Ñ NewsWatcher: a PowerPC version of Yet Another NewsWatcher
  68. Ñ a number of files that document the various features that Yet Another NewsWatcher adds to original NewsWatcher. It does not contain the original NewsWatcher user document, which you should obtain and read carefully.
  69.  
  70. Program Information for Yet Another NewsWatcher
  71.  
  72. Yet Another NewsWatcher is free. It may not be sold for profit or included with software or other products which are sold for profit without the permission of both Northwestern University and Brian Clark. If you redistribute the program, you must not modify the program or documentation in any way without the permission of Brian Clark, and you must distribute the complete Yet Another NewsWatcher archive containing the application, tables and plugins, scripts, and documentation.
  73.  
  74. Yet Another NewsWatcher requires at least 1700 kB of free RAM, a PowerPC processor, and System 8.5 or later. Several components that come with System 8.5, such as QuickTime 3.0 are also required. The Mac must be connected to the Internet, and Open Transport must be properly installed and configured. Yet Another NewsWatcher is available as a PowerPC  application. It runs in native Open Transport mode.
  75.  
  76. For dialup use, Yet Another NewsWatcher works with the various SLIP and PPP programs, and with ARA together with an appropriately configured AppleTalk/IP gateway. It does not support older kinds of dialup connections designed primarily for simple terminal emulation. If you need a newsreader which works with older kinds of dialup connections, you must use some other program.
  77.  
  78. There are a number of web sites where up-to-date information about Yet Another NewsWatcher and other newsreaders may be found:
  79.  
  80.     <http://www.macorchard.com/>
  81.     <http://www.newsreaders.com/>
  82.  
  83. French translations may be found at:
  84.  
  85.     <ftp://ftp.sri.ucl.ac.be/pub/News/>
  86.  
  87. The following people have in one way or another helped in the development, testing, and support of Yet Another NewsWatcher. Many thanks to: the anonymous ╥Non-English Docs" author, Terje Bless, Deborah Goldsmith, Jim Luther, John Moreno, Willem Nijenhuis, Andreas Prilop, Paul Ripley, Drew D. Saur, Andrew Starr, and Bill Stewart.
  88.  
  89. Special thanks to John Norstad for all his hard work on original NewsWatcher. Yet Another NewsWatcher would not be possible without the complete and sturdy foundation offered by original NewsWatcher. Thank you, John, we all appreciate what you've done for us.
  90.  
  91. The regular expression code is a slightly modified version of code by Henry Spencer. The plugin interface for the extended character set conversion was designed and written by Dan Crevier, and additional support code for non-Roman language support was written by Mizutori Tetsuya and Xiaolin Zhao. Text editing code using the WASTE text engine is based on code by Marco Piovanelli and Dan Crevier. ╥Natural Order╙ string sorting is based on code by Stuart Cheshire. The X-Face decoding code was originally written by James Ashton. Frontier scripting support code is by Dave Winer. SOCKS support is based on code written by Bernd Heller.
  92.  
  93. THE AUTHORS PROVIDE YET ANOTHER NEWSWATCHER AS IS, WITHOUT ANY WARRANTY OR PROMISE OF TECHNICAL SUPPORT. THE AUTHORS DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF YET ANOTHER NEWSWATCHER, INCLUDING, WITHOUT LIMITATION, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR SPECIAL DAMAGES OF ANY KIND, EVEN IF THE AUTHORS ARE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. THE AUTHORS MAKE NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE PROGRAM, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
  94.  
  95. Portions Copyright ⌐ 1994-1999 Brian Clark.
  96. Portions Copyright ⌐ 1994-1998 Northwestern University.
  97. Portions Copyright ⌐ 1996 Dan Crevier.
  98. Portions Copyright ⌐ 1986 by University of Toronto.
  99. Portions Copyright ⌐ 1996 by Stuart Cheshire.
  100. Portions Copyright ⌐ 1995 by Carnegie Mellon University.
  101. Portions Copyright ⌐ 1994-1995 by Christopher J. Newman.
  102. Portions Copyright ⌐ 1995-1997 by John Montbriand.
  103. Portions Copyright ⌐ 1990 by James Ashton.
  104. WASTE text engine ⌐ 1993-1998 by Marco Piovanelli.
  105.  
  106. Program Information for Original NewsWatcher
  107.  
  108. The original NewsWatcher was written by John Norstad of Northwestern University:
  109.  
  110.     <mailto:j-norstad@nwu.edu>
  111.  
  112.  The anonymous FTP site for the original NewsWatcher program, the user document, and the CodeWarrior C source code is:
  113.  
  114.     <ftp://ftp.nwu.edu/pub/newswatcher/>
  115.  
  116. The program is based on the original version 1.0.2 written by Steve Falkenburg of Apple Computer. Thanks also to the following people who helped test development and beta versions, helped with design discussions, and/or helped with code contributions: Apple DTS, Bob Boonstra, Ross Brown, Steven Carmody, Adam Engst, Ron Flax, Simon Fraser, Aaron Giles, Haydn Huntley, Steve Klingsporn, Jean-Pierre Kuypers, Robert Lentz, Peter Lewis, Jim Matthews, John Moreno, Andrea Norstad, Jeremy Norstad, Lasse Hiller┐e Petersen, AndrÄ Pirard, Quinn, Howard Rafal, Pete Resnick, Craig Richmond, Larry Rosenstein, Leonard Rosenthol, Jeroen Scheerder, Michael Shappe, Eric Slosser, Stephan Somogyi, Neal Trautman, John Werner, Dean Yu, Mahboud Zabetian, and the nice people on comp.sys.mac.comm.
  117.  
  118. Special thanks to Steve Dorner, both for his advice and assistance, and for his ╥Eudora╙ mail program, which has served as a consistent source of inspiration for NewsWatcher in particular and as a standard of excellence for Macintosh Internet software in general.
  119.  
  120. Problems?
  121.  
  122. Yet Another NewsWatcher was developed by Brian Clark based on the original NewsWatcher application by John Norstad. If you encounter problems, PLEASE read the original NewsWatcher manual and the Yet Another NewsWatcher documents to see if the matter is discussed there. Most questions are answered in John Norstad's user document for the original NewsWatcher. In particular, see the ╥Getting Started╙ chapter for basic instructions on how to use the program, and see Appendix F for a list of ╥Frequently Asked Questions╙ (FAQs) and their answers. If you don╒t have a copy of the user document, you can get it via anonymous FTP.
  123.  
  124.     <ftp://ftp.nwu.edu/pub/newswatcher/user-doc.postcard.sea.hqx>
  125.  
  126. Additional information is contained in the various user documents that accompany Yet Another NewsWatcher. Before writing or posting to ask for help or report a problem, make certain you have the most recent version of the program.
  127.  
  128. Unfortunately usenet is not a good source of help when you're having trouble with Yet Another NewsWatcher. There's far too much misinformation posted there, and many more arguments than intelligent disucssions. If after reading the user guides you're still having problems,  email the author:
  129.  
  130.     <mailto:baclark@kagi.com>
  131.  
  132. Yet Another NewsWatcher requires Mac OS 8.5 or later. If OS 8.5 is not detected when the program starts up, and alert is displayed. Yet Another NewsWatcher also requires some standard features of OS 8.5, such as QuickTime 3.0, the Appearance Manager, and Navigation Services Manager. Again, alerts are displayed when launching Yet Another NewsWatcher if some necessary feature isn't available. 
  133.  
  134. Some third party extensions can cause compatibility problems because they don't work properly with programs that use new OS 8.5 features. For example, versions of Kaleidoscope at least through version 2.1.1 include numerous bugs that affect Yet Another NewsWatcher. These cause flickering in the status window and a severe overall slowdown of the system, problems scrolling through long group lists or article windows, and general cosmetic problems. Another example is ACTION Files which includes an option to disable Navigation Services. When this option is enabled, and Yet Another NewsWatcher checks for the presence of Navigation Services, it receives incorrect information due to the sabotage performed by the utility, and reports it cannot run because Navigation Services isn't installed. The solution is to disable ACTION Files from being used within Yet Another NewsWatcher, where it does no good anyway because it doesn't support Navigation Services. A preferred alternative to ACTION Files is Default Folder. Version 3.0  of Default Folder also has an option to disable Navigation Services, but this can be turned off for specific applications like Yet Another NewsWatcher that require Navigation Services. Better yet, Default Folder actually supports Navigation Services, and so is very useful for modern programs that use Navigation Services instead of the obsolete Standard File.
  135.  
  136. Yet Another NewsWatcher also needs Internet Config 2.0 or later to be fully functional. Internet Config is used by the built-in binary decoder to assign file creators and types based on the decoded file's extension. It's also used to determine what constitutes a command-clickable URL in the program's various text windows and what helper program to use to open the URL. Among other places, Internet Config is available from:
  137.  
  138.     <http://www.newsreaders.com/mac/utilities.html>
  139.  
  140. Make sure you've read the ╥!!READ ME FIRST!!╙ document that accompanied the Yet Another NewsWatcher distribution. It contains important information that you must know and directions you must follow.
  141.  
  142. If you are running Yet Another NewsWatcher after having previously used the original NewsWatcher, when the program starts you will receive an error message about preferences being not found, damaged, or invalid. This is normal. These are the preferences that Yet Another NewsWatcher adds for the extra features it offers.
  143.  
  144. If you are using a news server that requires authentication (as most independent commercial news servers do), you need to enter your username and password and check the ╥Always authenticate╙ option before you can connect to the news server. All this is done in the ╥Authentication╙ portion of the preferences dialog. More information on this topic is in the original NewsWatcher user guide.
  145.  
  146. Yet Another NewsWatcher has been proven to be a stable program that runs well and reliably on most peoples' Macs. If you encounter problems, here are some things to try/look out for:
  147.  
  148. Ñ Make sure you have your location and time zone specified correctly in the Date & Time control panels. Setting your location is important for the correct operation of the various date handling routines.
  149. Ñ Set a reasonable maximum number of articles to fetch, such as 600-1200, rather than the standard default value of 15000.
  150. Ñ Make sure you're using the most recent version of Open Transport, and have installed all the appropriate system software updates.
  151. Ñ Try running with the minimum number of system extensions to see if this eliminated the problem. Kaleidoscope in particular can be a source of numerous problems, owing to its incomplete or incorrect support for new OS 8.5 features (versions of Kaleidoscope at least through version 2.1.1 include numerous bugs that affect Yet Another NewsWatcher).
  152. Ñ As a last resort, trash your old prefs and/or filter files, and see if that makes any difference.
  153.  
  154. Summary of New or Changed Features
  155.  
  156. There are substantial differences between Yet Another NewsWatcher, original NewsWatcher, and other NewsWatcher versions. Some of these differences are touched upon here. Following sections in this user guide act as an overview of program features and operation, and provide additional information about the unique features of Yet Another NewsWatcher. Yet Another NewsWatcher provides extensive balloon help for the various items in menus, dialogs, and windows. Often the hints provided by balloon help are sufficient to understand how a program feature works or is turned on or off.
  157.  
  158. 1) Numerous cosmetic changes have been made. The program is Appearance-savvy and makes extensive use of Appearance Manager features. Most windows have (optionally hidden) icon buttons at the top that are used to perform various tasks. Many are simple pushbuttons that are used to display a dialog and change some settings for the window. Others are toggle buttons that are used to indicate a setting. The filter groups icon buttons shown in group and subject windows are both. For these buttons, clicking on the button shows the dialog while option-clicking toggles the button on or off. This is explained in the balloon help for the buttons.
  159.  
  160. 2) Extracting binaries has been substantially improved. The program detects and decodes BinHex, uuencoded, and Base64 encoded files. The built-in decoder also handles AppleSingle and AppleDouble formats and MacBinary I, II, and III. The decoder has been carefully designed to deal with the often badly encoded files that abound in usenet binary groups, and to do the best possible job of decoding them, even when a single post contains multiple parts that have been encoded multiple times in various formats.
  161.  
  162. A number of new options relating to extracting binaries can be found in the ╥Extracting Binaries╙ portion of the Preferences dialog. If ╥Keep No Attachment Found╙ is checked, Yet Another NewsWatcher will not delete any binaries that it starts to download and then determines that they are bad in some way (incomplete, or not a recognizable binary format, or ...) This will also cause incomplete downloads (terminated due to a network error or user cancel) to be kept too, as well as multi-part binary downloads that are missing one or more segments.
  163.  
  164. 3) Added support for automatically viewing downloaded PICT, JPEG, GIF (file type 'GIFf'), TIFF, PNG (file type 'PNGf'), and BMP (file type 'BMP ') files. If ╥Show Images╙ in ╥Extracting Binaries╙ portion of the preferences dialog is checked, decoded images will automatically be displayed in a window within Yet Another NewsWatcher. Icon buttons allow the image to be resized to fit the window (whose position and size can be locked) and the image file to be optionally deleted when the window is closed or the next image is displayed. The third icon button can be used to display information about the image. If the ╥Add Post Info Text to Downloaded Files╙ option is checked, in the ╥Extracting Binaries╙ portion of the preferences dialog, informational text including the original post's Subject, From, and Message-ID headers is included, as well as any descriptive text that preceded the binary attachment. Clicking on the info icon button displays a small text window containing this information. A fourth icon button pauses the automatic display of newly decoded images. Note this image display does not occur when Yet Another NewsWatcher is in the background. Any images which are decoded while the program is in the background will not be displayed until the program is again brought to the front. The preferences pane allows the minimum duration a new image is shown to be set. If this value is set to 0, each new image comes up with the pause button pressed, and the next image will not be shown until the current image is unpaused.
  165.  
  166. Image files can also be opened manually via the Open command. These are shown in separate windows which are distinct from the window used for automatically viewing downloaded images. Movie and MP3 files can be shown in the same manner.
  167.  
  168. Pressing command-1, -2, -3, or -4 is a shortcut for clicking on the trash, resize, info, or pause buttons. If main keyboard shortcuts are enabled, pressing 't', 'r', 'i', or 'p' are also valid shortcuts.
  169.  
  170. 4) A new item has been added to the Special menu to disable or re-enable the truncation of messages that seem to be binary posts. Sometimes the logic used to detect binary posts fails, causing normal text messages to be truncated. This menu option lets you (presumably temporarily) disable truncation so that the message can be read.
  171.  
  172. 5) A new ╥Compact Article Cache╙ command in the Special menu can be used to remove old items from this cache. A large cache can cause some out of memory errors, since the number of articles actually added to a subject window for processing and actual display is the number fetched PLUS the number in the cache. The latter number can be very large, causing apparently inexplicable memory problems. Note that, if you have the option to backup your prefs file enabled, you can ╥undo╙ the cache flushing by using the backup prefs file the next time Yet Another NewsWatcher is launched (the article cache is stored in the prefs file).
  173.  
  174. 6) It's possible to download articles or binaries to disk or send messages in the background while still reading the news. Downloading and sending may be paused and resumed at a later time, with the list to pending items saved when you quit the program and restored when you startup again. See Part Eight: Queued Downloading and Sending╙ for a discussion of this feature.
  175.  
  176. 7) It's possible to queue opening subject windows via a separate news server connection. A prefs setting in the ╥News Server╙ prefs panel turns this on or off. When enabled, you can double-click one or more newsgroups in a group window, and continue to read posts in open subject windows. Queued groups waiting to be opened are marked with an '*' in group window, and any group currently being opened is marked with a 'Ñ'. Closing a group window, or pressing command-period when a group window is topmost, cancels all pending open operations for that window.
  177.  
  178. 8) The program has full support for binary posting. See ╥Part Ten: Binary Posting╙ for more information.
  179.  
  180. 9) The ability to filter articles has been added. See ╥Part Three: Filtering╙ for details.
  181.  
  182. 10) Added support for using a Eudora Nicknames file. There's now a new panel in the preferences dialog. From there you can specify a Eudora Nicknames file that will be automatically converted and saved to a new file, called Yet Another NewsWatcher Nicknames, stored in the ╥YA-NewsWatcher Settings╙ folder, when the program starts up. A new ╥Insert Recipient╙ hierarchical menu in the Edit menu then lets you insert an email address stored in the nicknames file. Note that when you select a nickname from the ╥Insert Recipient╙ menu, the actual email address and not the nickname is inserted. This is unlike Eudora, which inserts the nickname and only later changes it to an email address. Yet Another NewsWatcher never tries to interpret an entry in an email address field as a nickname and expand it into an email address.
  183.  
  184. 11) Added a ╥Newsgroup Settings╙ menu item. This leads to a three level dialog that allows certain preferences (subject window font, article font, sort order, headers to display, default message window personality, font, and encodings etc.) to be set on a newsgroup by newsgroup basis. These settings override those in the preferences dialog. This is a very powerful features that allows many different settings to be customized on a per newsgroup basis.
  185.  
  186. 12) Added a ╥Newsgroup Settings╙ menu item. This leads to a three level dialog that allows certain preferences (subject window font, article font, sort order, headers to display, default message window personality, font, and encodings etc.) to be set on a newsgroup by newsgroup basis. These settings override those in the preferences dialog.
  187.  
  188. 13) It's now possible to specify other than Mac->Latin1 and Latin1->Mac character transliterations when sending messages or viewing posts. When sending a non-binary message, Yet Another NewsWatcher now includes the appropriate MIME headers indicating the character set in use. For more information of this feature, see ╥Part Seven: Character Sets.╙ It╒s also possible to change the font or charset for an article window after it has been opened, using the ╥Article Format╙ command in the View menu.
  189.  
  190. 14) Added the Export command to the File menu. This writes the contents of a group or subject list window to a tab-delimited text file. The file creator and default save-to folder are the same as for saving article files. Message windows can also be exported to text files that will mirror how the message will look when its posted or emailed. When exporting (or printing) a message window, if the option key is held down while choosing the Export or Print command the exported or printed text will have the usual charset transliteration done to it (i.e. it will print using the same characters that would be sent to the news server). If the option key is not held down, no charset transliteration is done, and the characters will be as shown in the message window (using the current Macintosh charset).
  191.  
  192. 15) It is now possible to change news servers (actually preference files) without quitting and restarting. This can be done by double-clicking a prefs file from the Finder, dragging a prefs file onto the program icon, opening a prefs file from within Yet Another NewsWatcher using the usual File menu Open command, or using the ╥Switch Servers╙ hierarchical menu in the file menu. In each case an alert is displayed asking if you really wish to change prefs files. This alert can be turned off using a "Miscellaneous Options╙ preference setting.
  193.  
  194. If a new prefs file is opened in any of these ways, all the currently open windows in Yet Another NewsWatcher are closed, the new prefs file is opened, and the usual program startup operations are performed.
  195.  
  196. 16) Added the ability to hide newsgroups in the full group list window that don't match a search string. The search text editing field is made active or inactive by pressing the tab key. When active the usual hilight frame is drawn around it, and keystrokes and the Select All/Deselect All menu commands apply to it. When inactive keystrokes and the Select All/Deselect All menu commands are directed at the group list.
  197.  
  198. There╒s a new preference item (in the Miscellaneous pane) to determine whether the new ╥show╙ panel in subject windows and the full group list window is shown by default. For an individual window it can be shown or hidden using the ╥Show Details/Hide Details╙ command in the View menu. There╒s also a new preference item (in the Miscellaneous pane) to determine if unread hidden articles are treated as read or not when a subject window is closed and articles are hidden. Any hidden articles that are already marked as read will be so treated.
  199.  
  200. 17) Added the ability to hide articles in subject windows that don't match a search string. The string can match the Subject: header of articles, or the From: header if that information is available (use XOVER is enabled or Show Authors is enabled). The search text editing field is made active or inactive by pressing the tab key. When active the usual hilight frame is drawn around it, and keystrokes and the Select All/Deselect All menu commands apply to it. When inactive keystrokes and the Select All/Deselect All menu commands are directed at the article list.
  201.  
  202. 18) Text windows now use the WASTE text engine, which supports long documents, styled text, and Undo/Redo.
  203.  
  204. 19) Message windows now feature intelligent wrapping and rewrapping of text. As you enter text into a message window, it is automatically formatted to show how it will look when it is sent, including the wrapping of long lines of text. This means that you now know exactly where each line break will occur.
  205.  
  206. As part of this change, quoted text is no longer automatically wrapped. If you edit some quoted text so that the lines become very long, they will display that way in the message window and be posted that way unless you explicitly wrap them using the Wrap command. However, if the ╥wrap on send╙ option is set by default for a message window (as it almost always should be), then when a reply message window is opened all the quoted text is automatically wrapped when the window is created.
  207.  
  208. The Wrap and Unwrap commands are now much smarter about quoted text. If you unwrap quoted text the quote characters at the start of the second and following lines are automatically removed. If you rewrap such text, the quote characters are reinserted.
  209.  
  210. Most newsreaders don't do a very good job of wrapping messages that contain quoted text. The result can be text that loses the quote characters or which has widely varying line lengths. Yet Another NewsWatcher's intelligent wrapping feature eliminates many of these problems. An added command, Rewrap, will unwrap and rewrap selected lines of text in one step, and can be used to undo some of the bad formatting created by other newsreaders.
  211.  
  212. 20) By default the program do the startup tasks you've assigned it (checking for new groups, opening user group files in the special startup folder, etc.) when you start the program or switch servers. Holding down the shift key bypasses these operations, which means that no connection to the news server is made to check for new groups or new posts. After the program is running you can of course use the various menu commands to perform these operations.
  213.  
  214. Using Multiple News Server Connections
  215.  
  216. Yet Another NewsWatcher has the ability to use multiple connections to a single news server so that several newsreading tasks can be performed simultaneously. The program always uses one news server connection to open articles for reading, check for new posts in a group list, and perform a few other tasks in an interactive manner. By checking the appropriate option in the ╥News Server╙ panel of the preferences dialog, it's possible to use additional connections to open subject windows and also download articles and send new messages.
  217.  
  218. Not all news servers allow multiple simultaneous connections. More and more independent commercial news servers either limit users to one or two connections, or charge extra for additional connections. That's because each connection can impose a significant load on a news server, and it's very costly to build and maintain a news server that can deal with the enormous number of posts received everyday and the demands of users browsing and reading those posts. 
  219.  
  220. There are two factors that affect the speed of newsreading: the speed of the news server (which usually affects the delay in starting to return header information or in finding how many new posts are in a newsgroup) and the available bandwidth of the user's connection to the news server (which usually determines the rate at which articles or other information is downloaded to the user's system).
  221.  
  222. Any newsreader that tries to speed up newsreading by using multiple connections to a news server must understand these two factors in order to effectively deal with the problem. Failure to do so may well make matters worse, by slowing down the responsiveness of the user's system and overburdening the news server so that everybody suffers poor performance. The way that Yet Another NewsWatcher uses multiple server connections is designed to deal with these realities.
  223.  
  224. It's obvious that if a given task is slowed by the available bandwidth, then trying to perform several such tasks in parallel will only slow down them all so that none are completed quickly. This is why Yet Another NewsWatcher uses just a single extra connection to perform queued background downloading and sending. That way each individual download occurs as fast as possible, and the user receives and can use each download much sooner than if several of them were all competing for the available bandwidth. Similar logic holds for opening subject windows in a serial manner rather than trying to use many news server connections to open them all in parallel. The queued method doesn't bog down the news server with excessive connections that only slow everyone down. Instead the available news server resources and bandwidth are used in a responsible and efficient manner.
  225.  
  226. Part Two: Files and Folders
  227.  
  228. Yet Another NewsWatcher adds some new file types and folders to original NewsWatcher. This section introduces these new items, and explains how the program looks for the files it needs.
  229.  
  230. The Files
  231.  
  232. 
  233.  
  234. The screenshot above shows six of the files used by Yet Another NewsWatcher.
  235.  
  236. Those in the top row are also used by original NewsWatcher. The leftmost is the application itself. To its right is the preferences file. This file stores all the settings entered in the program preferences dialog, plus the full list of newsgroups, plus various other settings (saved dialog positions, etc.) The preferences file, because it is used to save the name of the news server you connect to, and the list of all the newsgroups carried by that server, is unique to a given news server. If you wish to use Yet Another NewsWatcher to connect to more than one news server, you need to have more than one preference file (one per news server). This is discussed in more detail in the original NewsWatcher user guide. The rightmost file is a user group file, used to store information on the newsgroups to which you subscribe. Because of the way that news servers work, this too is specific to an individual news server.
  237.  
  238. The second row shows the new files used only by Yet Another NewsWatcher. The leftmost is the filters or settings file. It is always named ╥YA-NewsWatcher Filters.╙ It contains both the filters you define to label (hilight or kill) posts, and the newsgroup-specific settings you have created. It can be shared among multiple news server configurations through the use of aliases (see below). The center file is created when you have enabled the option to convert a Eudora Nicknames file for use with Yet Another NewsWatcher. It holds the converted nicknames. The rightmost file is an optional charset transliteration file. See ╥Part Seven: Character Sets╙ for more information on these files.
  239.  
  240. Folders and File Locations
  241.  
  242. John Norstad designed original NewsWatcher to be a flexible program that would work well in both single and multi-user environments using one or more news servers. This is achieved by allowing multiple preference files to be used to customize the program for an individual user or news server. This flexibility can sometimes cause confusion, and moving essential files away from where they should be can cause problems. This section briefly explains how Yet Another NewsWatcher looks for the files it needs and expects to find.
  243.  
  244. One special folder is the one that holds the Yet Another NewsWatcher program. That folder should use the following arrangement:
  245.  
  246. 
  247.  
  248. In addition to the program, it contains two special folders. One is the ╥YA-NewsWatcher Help╙ folder that contains program help files. Any text files placed in this folder will be added to the program's Help menu. The other is the ╥YA-NewsWatcher Translators╙ folder. This folder is used to hold the character set translation plugin and table files used to adapt the program to reading and posting on non-English newsgroups.
  249.  
  250. The other files are used to hold settings for particular newsgroups and various preferences. They're typically stored in a folder of their own. The following configuration makes it easy to switch between several news servers while sharing newsgroup settings and filters.
  251.  
  252. 
  253.  
  254. The above example shows the setup for using two news servers.
  255.  
  256. The prefs files contain a large part of the information specific to a given news server. They're the documents that you double-click or open to start the program or to change servers. Yet Another NewsWatcher expects to find certain files or folders in the same location as the active prefs file. The folder (or alias to a folder) named ╥YA-NewsWatcher Servers╙ is used to make it easy to switch servers. Any prefs files (or aliases to prefs files) found in this folder will be added to the program's ╥Switch Servers╙ hierarchical menu in the File menu. The easiest way to manage the prefs files for multiple servers is as show above. Create a folder named ╥YA-NewsWatcher Servers╙ and place in it aliases of the prefs files for the various news servers you wish to use. Then make an alias of this folder, and place a copy of the alias in the same folder as each prefs file (and ensure it has the name ╥YA-NewsWatcher Servers.╙ Then when connected to each news server you be able to quick switch connection to all the others.
  257.  
  258. The folder named ╥YA-NewsWatcher Settings╙ is the folder used to contain the filters file (containing both filters and newsgroup settings) and your converted Eudora nickname file. Again, it's often desirable to use one filters file with all your news servers. The solution is to place the filters file in it's own folder somewhere handy, and place an alias to the file in each server's ╥YA-NewsWatcher Settings╙ folder, as shown above.
  259.  
  260. The folder named ╥YA-NewsWatcher Stationery╙ holds the message stationery pad files used to define the personalities that can be used with that server. Often these files are server-specific, so the above installation shows individual stationery files for each server and no cross-server sharing.
  261.  
  262. Finally each server has its own user group files that are used to store the information for the newsgroups to which you subscribe. Because of how news servers keep track of articles, these files most often can NOT be shared among servers. So again each news server has it's own files. In the configuration above they're placed in the special ╥YA-NewsWatcher Startup╙ folder. And file placed in this folder is automatically opened by the program when it starts up or changes to that server. By placing your user group lists in the startup folder, you make sure they're automatically opened when you switch to that server.
  263.  
  264. Finally, if when using Yet Another NewsWatcher you experience trouble that might be related to preference or filters files, remember the discussion above on how the program tries to find the files it needs, and search your disk for unexpected and unwanted multiple preference or filters files.
  265.  
  266. Part Three: Filtering
  267.  
  268. A major improvement offered by Yet Another NewsWatcher over original NewsWatcher is the ability to apply filters to articles listed in subject windows. With the appropriate filters, you can label posts on subjects or by authors you find especially interesting or instructive, remove unwanted annoyance posts, and generally make your usenet reading faster and more efficient.
  269.  
  270. How Filters Work
  271.  
  272. Yet Another NewsWatcher classifies filters into four categories: 
  273.  
  274. 1) The global filter, with a filter group name ╥.╙. Any filters in this group are applied first. The global filter group matches every newsgroup. This is the best place to create common-interest filters (all posts by yourself or the almost as notable John Norstad) or common-disinterest filters (to remove all MAKE.MONEY.FAST posts for example).
  275.  
  276. 2) Regional hierarchical filters, with filter group names of the form ╥name1.name2.╙. These filter groups match any newsgroup whose name starts with the filter group name, excluding the final period. For example, consider a regional filter group named ╥comp.sys.╙. This filter group will match the newsgroups comp.sys, comp.sys.mac, comp.sys.mac.comm, and comp.sys.next. These filters are applied in order of length. For example, suppose there are filters defined for the filter groups ╥comp.sys.╙ and ╥comp.sys.mac.╙. When filtering the newsgroup comp.sys.mac.comm, first the ╥comp.sys.╙ filters would be applied, then the ╥comp.sys.mac.╙ filters.
  277.  
  278. 3) Multi-group filters, with filter group names that are regular expressions. The use of regular expressions means that such filters can match group names in various parts of the usenet hierarchy. Otherwise these are similar to regional filters, and are applied at the same time as regional filters.
  279.  
  280. 4) Local filters, with names identical to a newsgroup name. These apply only to the newsgroup named, and are applied last, so that any filtering they apply can supersede that performed by the earlier, more general purpose global or regional filters.
  281.  
  282. All three kinds of filters are stored in a single Yet Another NewsWatcher settings file, and define a set of filters that can be applied to articles. The settings file is stored in a special folder named ╥YA-NewsWatcher Settings╙, which must be located in the same folder as the active prefs file.
  283.  
  284. There╒s one final wrinkle on user group window specific filters. If you have a user group file named ╥My Sub╙, a filter group named:
  285.  
  286. .My Sub
  287.  
  288. (that╒s a period followed by the name of the user group file) will be treated as a global filter for that user group window only. This filter will be applied after the regular global filter ╥.╙ but before any regional or local filters. This means that you can use just one filter file and still have filters that apply only to one user group window or another. This makes it easier to share filter files when you use more than one news server and therefore have more than one prefs file and user group file.
  289.  
  290. Preferences
  291.  
  292. There are two sections of the Preferences dialog that deals with filters.
  293.  
  294. The first is ╥Filter Options.╙ It is used to set basic filter functionality.
  295.  
  296. ╥Disable Filtering╙ turns the filtering option off by default. When group windows are opened, their initial filtering enabled/disabled setting is taken from this value. It╒s possible to toggle the filtering enabled/disabled value for an open group filter by option-clicking on the Filter Groups icon button. The icon is drawn selected when filtering is enabled. When subject windows are opened from a group window, their initial filtering enabled/disabled state is inherited from the group window. Again, filtering for an open subject window can be toggled between enabled or disabled by option-clicking the Filter Groups icon button, which is drawn selected when filtering is enabled. To show the articles in an open subject window without filtering when the window was opened with filtering enabled, or to show with filtering the articles if the window was opened with filtering disabled, first option click on the Filter Groups icon button to toggle filtering on or off, then choose the Refilter command from the News menu.
  297.  
  298. ╥Expand Labeled Threads╙ is pretty much self explanatory. If a thread contains an article that has been labeled, the thread will be automatically expanded when displayed in a subject window.
  299.  
  300. Filters can be set to expire a number of days after they have been created. Expired filters are removed from the filters file. If ╥Show Expiration Alert╙ is checked, the Status dialog will show at program startup if any filters have been expired.
  301.  
  302. ╥Keep Expired Filters╙ is intended to let you save and possibly reenable an expired filter. If this option is checked, expired filters are moved to a filter group that has the same names as the original group with a leading bullet (Ñ) character added.
  303.  
  304. 
  305.  
  306. Yet Another NewsWatcher filters support the concept of assigning an importance weighting factor, or score, to filters and articles. As filtering progresses, each article╒s score is increased by the score value assigned to every filter that matches the article. For example, suppose that John Norstad posts an article titled ╥New NewsWatcher Version.╙ You have defined three filters. One filter labels all articles whose From: header includes the word Norstad. The score for this filter is 500, because you are very interested in what John has to say. A second filter labels all articles whose Subject: line includes the word NewsWatcher. The score for this filter is 100. A third filter labels all articles whose Subject: line contains the word money. The score for this is set to -500, because you hate to see MAKE.MONEY.FAST posts all the time.
  307.  
  308. So, when filtering articles, Yet Another NewsWatcher tries all three filters. The first two match John╒s post, assigning a score of 500╩+╩100 = 600 to the article. A MAKE.MONEY.FAST post gets a score of -500. If you set the ╥Score to Kill╙ entry in the Filter Options dialog to 0, the MAKE.MONEY.FAST post will be killed (removed from the subject window) because its score is less than the value you set. You can also set a score below which articles will be marked with the (junk) label (see below).
  309.  
  310. The remainder of the items in the dialog are used to customize the labels that are applied to filtered articles. There are a total of 12 possible labels. They are displayed in order of importance from top to bottom. Threads with articles assigned labels from the top of the list will sort to positions higher in subject windows that threads containing lower rank labels, assuming that the sort by label option has been enabled. The top 9 labels can be dragged to establish a different order of importance. The color of these labels can be edited by selecting the item in the list and clicking on the ╥Edit Color╙ button. Just like Finder labels, a label can have both a color and a name associated with it. The name can be edited by selecting the label in the list and clicking on the ╥Edit Text╙ button.
  311.  
  312. The bottom three labels are special. They can╒t be edited or reordered. (Unlabeled) is used to mark an article with a filter without otherwise labeling it. This would usually be used when the ╥Articles Not Matched Are Deleted╙ option for a filter group. (killed) is used to remove annoyance posts from subject windows. (junk) is used to label articles that are probably annoyance posts but which you might want to look it.
  313.  
  314. The ╥Make Default╙ button is used to make one label the default for newly created filters. The default label is shown with a checkmark beside it in the labels list. It does not need to be the topmost label.
  315.  
  316. A second section affects how the headers needed by filters are obtained from the news server.
  317.  
  318. 
  319.  
  320. It's unfortunate but true that not all news servers let you fetch all the usual headers. Often only the most common headers are available. In some cases the other headers may be available, but getting them from the server takes much too long. Perhaps you're sharing a filters file among several news servers, and each server has it's own quirks about header availability and speediness. That's where the ╥Filter Headers╙ preferences come in. This lets you disable fetching specific headers for the given news server without having to disable any filters that use the header. The filters will just be skipped, without any length delay to fetch the header or with for the news server to refuse to return the header information.
  321.  
  322. Creating and Editing Filters
  323.  
  324. New filter-related commands have been added to the News menu. These commands are used to create new filters, and to view and edit existing filters.
  325.  
  326. ╥Filter Groups╔╙ brings up a window listing the available filters. Using the controls in the top portion of the window, it's possible to list just the filters in a single filter group, or all the filters, and other combinations. Each filter is displayed as an individual list item. Each such item is two lines high. The top line shows the filter group the filter belongs to, its label, and its score. The bottom line shows what header the filter matches, what is the search string (or date or line count values for date and line count filters), the expiration period for the filter, and how many days ago it was last used. If the entire filter group is disabled, the filter group name is drawn in italics. If an individual filter is disabled, the search string is drawn in italics.
  327.  
  328. 
  329.  
  330. The topmost portion of the window contains 8 icon buttons. The leftmost one (icon of a label with a radio button) is used to edit the settings for an individual filter (if just one filter is selected in the list) or to batch change a number of settings for multiple filters (if more than one filter is selected in the list). This is followed buttons to create a new filter (icon of a label with a plus sign), delete the selected filters (icon of a label with a negative sign), or duplicate the single selected filter (icon of a label with a multiply sign). The fifth button from the right (icon of a group of labels with a radio button) is used to edit the group settings for the filter group corresponding to a single selected filter. This is followed by buttons to create a new filter group (icon of a group of labels with a plus sign), delete the filter group (and all its associated filters) associated with a single selected filter (icon of a group of labels with a negative sign), and duplicate the filter group associated with the single selected filter (icon of a group of labels with a multiply sign).
  331.  
  332. Under the icon buttons are the controls used to display which of the available filters are shown in the filter list. The filters lits is very powerful, and can be used for many different tasks, and these different tasks are made possible by setting these controls appropriately.
  333.  
  334. A common task is to display or edit the filters for a single filter group, perhaps changing the order in which they are applied. Because the list can display filters in more than one filter group, and in orders other than that in which the filters are applied, it's important to ensure the list display is configured appropriately. To change the filter order (done by dragging the filters within the list), the window must be set up to display the filters for just one filter group in the order they will be applied. This means setting the controls as shown above: the first popup should be set to ╥is╙ with the exact name of the filter group entered in the text field on the right, the header popup should be set to ╥all╙ (to display all the filters, and not those that match on a particular header), the sort mode should be set to ╥normal╙ (meaning the order in which the filters are applied) with the sort direction as shown (ascending order), and the bottom text field should be blank (to match all possible filter match strings). The rightmost popup menu can be used to enter the filter group name from a list of current filter groups. using this popup menu is the easiest way to switch between filter groups.
  335.  
  336. Other tasks call for other settings. To display all the filters, ensure that both text fields are empty and set the header popup to ╥all.╙ You can then choose to display just those filters that use a particular header. Or you can change the sort mode to display the filters in order of label, or score, or expiration. You can see how many low or high score filters you have, how many haven't been used in a long time. You can then select several filters and change all their labels at once, or change how they're expired, and other similar tasks.
  337.  
  338. At any one time either one of the edit fields at the top of the window or the filter list itself has the focus and will respond to Edit menu commands. When an edit field is the item with the focus, it's drawn in the usual way with a ring around its outside. When the list has the focus, none of the edit fields are drawn with a focus ring. When the list has the focus, it's possible to copy selected filters with the Copy command in the Edit menu. The Clear and Cut commands work similarly. If any filters have been previously copied, and the list has the focus and is set up to display the filters for just one filter group, the Paste command will be enabled and can be used to paste the filters into that filter group. If instead an edit field has the focus, the Cut, Copy, Paste, and Clear command work on the selected text in that edit field. As is usual, ckicking on an edit field or the list gives it the focus, and pressing the tab key advances the focus to the next item.
  339.  
  340. When editing a filter, via double clicking on the filter in the ╥Filters List╙ window or via a ╥New Filter╔╙ menu commands; you are presented with the ╥Edit Filter.╙ The dialog is intended to be read from top to bottom left to right as an English sentence.
  341.  
  342. 
  343.  
  344. The topmost type-in popup menu is used to define the filter group for the filter. The initial value corresponds to the current newsgroup when a new filter is being created. Below this is a popup menu used to select which header line will be used for filtering. Most headers support filtering by matching text in the header line. For example, you can choose ╥From╙ as the header and then in the text box below the popup menu enter the text ╥John Norstad╙ to filter posts by the author of the original NewsWatcher program. Just above the textbox is a third popup menu that is used to select what kind of text matching will be performed. Most often the ╥Contains the String╙ item is the best choice, but you can also create filters that look for specific words, or phrases that start or end with a specific string. By checking the ╥Ignore case╙ checkbox, string matching will treat upper and lower case characters as the same. Much more powerful (but also slower and more difficult to use) matching can be done by selecting the ╥Contains the Reg. Exp.╙ item to perform regular expression matching. The syntax for regular expressions understood by Yet Another NewsWatcher is described in the file ╥Regular Expressions.╙
  345.  
  346. Yet Another NewsWatcher does its best to insert text from all the available headers into the textboxes shown for all the possible settings of the header popup menu. If the filter dialog is opened when an article window is topmost, all the headers from that article will be placed in the appropriate textboxes. If the dialog is opened from a subject window with a selected article, text from the available headers (those displayed in the subject window) will be placed in the textboxes. If no article is selected, the textboxes will all be empty.
  347.  
  348. When creating a new filter, either via the Filters menu or by clicking on a button in a subject window or in the Filter Groups dialog, the default header being filtered is the Subject header. If you hold the option key down when selecting from the Filters menu or clicking on a button, the default header is instead the From header.
  349.  
  350. Note that filters for the Date and Line headers do not use string matching. For dates you instead choose to filter articles more than a given number of days old, or less than a given number of days old. Yet Another NewsWatcher is smart enough to know that if you enter a number of 2 for ╥less than,╙ and 4 for ╥more than,╙ that you want to filter articles that are less than 2 or more than 4 days old; while having the numbers reversed means you want to filter articles that are less than 4 and more than two days old. Filtering on lines works in a similar manner. With dates there is an option to filter or not filter articles with missing or invalid date headers. For lines there is an option to filter or not filter articles with missing or zero line counts.
  351.  
  352. The label popup menu is used to set what kind of a filter is being defined. The uppermost menu items are used to mark posts with a specific label color and name, similar to Finder labels. The colors, labels, and order of these items can be edited in the ╥Filter Options╙ portion of the Preferences dialog. The bottom two entries are special. (Unlabeled) is used to mark a post as of interest without assigning a label color or name. The final entry, (Killed), is usually used to remove unwanted annoyance posts like MAKE.MONEY.FAST. The order of the items in the label popup menu defines their priority, with the topmost being the most important. When sorting by label, threads containing articles labeled with the topmost label will be displayed at the top of subject windows, followed by any threads labeled with the second from the top label, etc.
  353.  
  354. A filter can be set to expire a specified number of days after it is created. This will be useful when a filter is used to select articles of passing interest. Without this option the filters file would continue to grow as new filters are added, and the time it takes to filter subject windows would also continue to increase. Setting the expiration time to 0 makes the filter perpetual.
  355.  
  356. Individual filters can also be enabled or disabled, using the ╥Enable Filter╙ checkbox. Disabled filters are displayed in italics in the Filter Groups dialog.
  357.  
  358. When several filters have been selected and the leftmost icon button pressed, the ╥Modify Filter Settings╙ dialog is shown. It is used to make bulk changes to several filters at once. The filters' label, score, expiration, and enabled settings can all be changed or left as-is. Each section of the dialog has a checkbox that enables or disables changing that particular group of settings. For example, if the ╥Change label Settings╙ checkbox is checked, then after dismissing the dialog via the OK button all the selected filters will have their labels set as shown in the dialog. If the checkbox is not checked, then the label settings will not be altered.
  359.  
  360. 
  361.  
  362. When creating, editing, or duplicating a filter group, the ╥Filter Group Settings╙ dialog is shown. It is used to set those values that apply to all the filters in the filter group.
  363.  
  364. 
  365.  
  366. FInally, there are two other filter commands in the News menu. ╥Kill this Subject╙ creates a new, local filter for an article selected in the subject window or shown in an article window. The filter will kill all posts having the same subject as the article. Similarly, ╥Kill this Author╙ creates a new local filter to kill posts by the article╒s author. To instead create a new global filter, hold down the option key when selecting the command. These two commands are shortcuts that bypass the Edit Filter dialog, which is still the best way to create a new filter because of the flexibility it offers in setting the filter weighting factor, expiration time, etc.
  367.  
  368. Sundry Notes
  369.  
  370. Filter priority. The rank of a label (its order in the list of labels) is used to determine whether a later filter will override a previous filter's labeling of an article. The rules are:
  371.  
  372. 1) A kill or junk label always overrides any previous label. A kill or junk label may itself be overridden by any subsequent filter. Thus it is possible to unkill an article with a later filter.
  373. 2) Non-kill and non-junk labels will only override a previous label of equal or lower rank.
  374.  
  375. Killing articles by score. After all filters have been applied to the articles in a subject window, a final pass through the posts is made to mark as killed all articles with scores less than the value designated in the Filter Options dialog. This permits somewhat more selective killing than would be the case if articles were killed as soon as their score dipped below the kill threshold. For example, you might want to kill all posts with ╥money╙ in the subject lines unless you're reading alt.make.money.fast. You would then set up a global filter to score at -500 all articles with money in he subject line, and a local filter in alt.make.money.fast to score these articles at +500. Then the posts will be killed everywhere except in alt.make.money.fast (assuming the default kill threshold score of 0). Also, when filtering using scores, the score is applied for every filter match, even if the filter is a (killed) or (unlabeled) one. Junking by score works the same way.
  376.  
  377. A filter icon has been added to message windows. It is used to automatically create a filter to label the message and any replies it generates. When clicked, a dialog is displayed allowing the label, score, and expiration for the filter to be set. One new (local) filter is created for each newsgroup to which the message is posted. Each filter is based on the subject header and the subject of your message (truncated to 31 characters).
  378.  
  379. Live Filtering
  380.  
  381. There's a final kind of filtering that can be done to subject windows and also the full group list window. For both kinds of window you can choose to temporarily show or hide the list items that match a search string. An example is shown for the full group list illustrated below:
  382.  
  383.  
  384.  
  385. In this case the full group list normally contains nearly 45 thousand newsgroups. That can make it very hard to find the newsgroups you're interested. If ╥Show Details╙ is enabled for the full group window, the panel at the top of the window contains a text box where a search string can be entered, a checkbox to set whether searching should be case-sensitive or not, and a popup menu used to set the string matching options. You can enter a string and display only those newsgroups that match the string. An empty string is used to show all the available groups.
  386.  
  387. The same feature can be used with subject window to show or hide posts that match or don't match the search criteria you specify.
  388.  
  389. Part Four: Subject Windows, and Sorting and Threading
  390.  
  391. Introduction
  392.  
  393. In original NewsWatcher, article threads in subject windows are only sorted by the article number of the first article in a thread. In Yet Another NewsWatcher, threads can be sorted in a number of ways: article number, subject, author, date, label, line count, and priority.
  394.  
  395. Sorting by subject does just that, threads are sorted by the canonical (ignoring Re:, etc.) subject of the thread. The other sorting methods are equally self-explanatory. They are available when the matching header has been selected for downloading when the newsgroup was opened. For example, to sort by author you need to have ╥Show Authors╙ checked in the Subject Windows Option part of the preferences dialog.
  396.  
  397. When sorting by author, etc. the contents of threads are examined. A thread containing posts by Clark and Xanthus would be placed above a thread with posts by Norstad and Spindler when sorting by author using the normal order, since the first posts would be sorted according to ╥Clark╙ and the second by ╥Norstad.╙ In this case choosing ╥Sort in Reverse Order╙ would not reverse the order of the threads, since the first thread would sort by ╥Xanthus╙ and the second by ╥Spindler.╙ When ╥Sort High Priority to Top╙ is enabled, articles in subject windows are first sorted by priority color, and then by the regular sorting criterion (author, subject, etc.) Note that the reverse sort option does not affect sorting by priority. Priority can be determined by one of two means: label order, or score. This is set by a checkbox in the ╥Subject Windows╙ preferences pane.
  398.  
  399. ╥Normal╙ sorting order is defined as follows:
  400. Ñ When sorting by author, threads are sorted according to the normal alphabetical ordering by the last name of the authors. If two or more threads have the same author, they are then sorted in alphabetical ordering by the canonical subject line.
  401. Ñ When sorting by subject, threads are sorted according to the normal alphabetical ordering by the canonical subject line.
  402. When sorting by Lines, threads with long articles are sorted to the top.
  403. Ñ When sorting by dates, threads with more recent articles are sorted to the top.
  404. Ñ When sorting by score, threads with high scoring articles are sorted to the top.
  405.  
  406. Sorting is accomplished by selecting one of the options using the sorting menu items in the View menu, or by clicking on the appropriate column label in the Subject window (when column labels are shown). As in the FInder, the column by which sorting is determined is drawn as a pressed button. Shift clicking the currently pressed label button switches sorting to by article number.
  407.  
  408. Note that column labels in subject windows can be enabled or disabled on the fly using the ╥Show Labels/Hide Labels╙ item in the View menu.
  409.  
  410. Changing the sort order when a Subject window is frontmost will resort the articles in that Subject window. The order of sorting can be reversed by selecting that option in the View menu, or by clicking on the stacked blocks icon in the leftmost column label (when labels are shown).
  411.  
  412. 
  413.  
  414. Preferences
  415.  
  416. Any new Subject windows use the default sort method chosen in the ╥Subject Window╙ portion of the preferences dialog. This is also where the choice is made regarding which article headers to download and show when creating a new subject window.
  417.  
  418. 
  419.  
  420. There are also two options that control how threads are constructed for binary posts, and how articles are ordered within a thread.
  421.  
  422. Normally replies or followups to a binary post a placed in a separate thread. When the subject window is not sorted by subject, this means that the reply thread may be far from the original posts. If the ╥Keep Replies with Binaries╙ option is checked, the followups are instead placed at the end of the binary post thread.
  423.  
  424. By default the order of articles within a non-binary thread is the order in which the articles were received at your news server. In general, this is a pretty random order, and it╒s common for replies to show up before the original post, etc. If ╥Thread via References╙ is checked, an attempt will be made to order the articles more logically according to the References headers for the posts. Yet Another NewsWatcher uses a fairly simple scheme for doing such ordering that is reasonably fast and effective. Note that because an additional set of headers must be downloaded from the news server, the time to fetch the article information is increased. Also, the contents of a thread (what articles belong to a given thread) is still determined by the Subject line. Given that many newsreaders don╒t properly supply a complete, correct References header, and that many replies lack any references, the method used to create and order threads seems to be a good compromise.
  425.  
  426. The icon buttons at the top of subject windows (displayed when ╥Show Icon Buttons╙ is enabled) are used to perform various tasks. As in other windows, some are simple pushbuttons that are used to display a dialog and change some settings for the window. Others are toggle buttons that in addition to displaying a dialog also have an on or off state. An example of this is the filters button. When in the on state (drawn as pressed), it means that filtering will occur when the window is rebuilt (due to selecting a new sort order, etc.)
  427.  
  428. Part Five: Messages and Personalities
  429.  
  430. Introduction
  431.  
  432. Yet Another NewsWatcher lets you use different personalities when posting or emailing messages. A personality is a collection of settings that define some of the contents of the message, such as your email address, your signature and organization, etc.
  433.  
  434. A typical message window is shown below:
  435.  
  436. 
  437.  
  438. If the ╥Show Details╙ option is on, the panel below the icon buttons contains two popup menus. The one on the right is used to set the Mail-Copies-To header that tells others whether or not you'd prefer an email copy of any posted response to your message. The ╥Omit╙ setting does just this: no header is added to your posts, and readers can choose for themselves how to respond. ╥Nobody╙ means you're telling people that you do not want an email response to your post if the person also posts a response. ╥Poster╙ means that you'd appreciate an email copy of any posted reply.
  439.  
  440. Some additional settings can be shown and edited by clicking on the message settings icon button:
  441.  
  442. 
  443.  
  444. This gives you a chance to change all these settings for this particular message. The items in the top two panels affect the contents of the message when it is sent. The formatting options in the bottom panel only affect how it is shown to you in the message window.
  445.  
  446. The personality popup menu is used to switch between different personalities. There's always a personality named None. The settings for the None personality are taken from the values in the preferences dialog. Because there's no place in the preferences dialog to set certain optional items, such as your signature and organization and extra headers, these will be blank when using the None personality.
  447.  
  448. It's almost always useful to create a special personality named Default. This personality will be used when opening a new message window when no other personality has been set via a group setting. By creating a personality named default, you can have a signature, etc. that shows up in all your posts.
  449.  
  450. A number of different settings can be changed by switching personalities. The ╥full name,╙ ╥email address,╙ and ╥anti-UCE address╙ are all affected by the personality. So are your signature, as well as the Reply-To, Organization, extra mail, and extra news headers. To create a personality, you simply open a new message window and enter the desired text in the various edit fields in the message window and message settings dialog. Then save the message window to the special ╥YA-NewsWatcher Stationery╙ folder in the same folder as the current prefs file. If you hold down the shift key when choosing the ╥Save╙ or ╙Save As╙ commands, the file dialog will automatically show the stationery folder by default and will set the file type popup to the correct ╥YA-NewsWatcher personality document╙ type. Otherwise navigate to the proper folder and choose ╥YA-NewsWatcher personality document╙ from the popup menu in the save file dialog. This creates a new personality with the same name as the file you saved, and the personality is automatically added to all the personality popup menus. If the file was named ╥Default╙ this will create a new default personality that overrides the settings in the preferences dialog. Note that personality files files are actually regular message files that have been saved as stationery pads.
  451.  
  452. The newsgroup setting feature of Yet Another NewsWatcher can be used to set the initial personality that new message windows will use. This makes it easy to set your return email address and signature, etc. based on what newsgroup you're reading.
  453.  
  454. Preferences
  455.  
  456. Many of the options for message windows are set in the ╥Message Options╙ pane of the preferences dialog:
  457.  
  458. 
  459. This is where you enter the name of the SMTP (mail) server you'll use when you mail messages from the program. You also enter your name and email address here. You can also choose to enter an ╥Anti-UCE╙ email address. If this field is filled in, this email address is used whenever you post a message to usenet. If you don't wish to receive an email response to your post, and don't wish to receive junk email from scoundrels who cull email addresses from usenet posts to use for bulk emailings, you can use this feature. Check with your ISP for what address to use. Many ISP's provide a "dead letter box" email address for just this purpose. By using a valid email address you don't increase internet congestion by causing bounced email messages. If it's your intention to use an invalid email address, please use one that ends in ╥.invalid╙ such as ╥never@spam.invalid╙ because such addresses are guaranteed not to conflict with someone else's real email address. Any mail messages you send will always use the upper email address.
  460.  
  461. An unofficial rule is that signatures should be limited to 4 lines of no more than 80 characters each. The program will warn you if you try to send a message with a too-long signature. It won't warn you more than once per session about any given signature, and you won't be warned more than 5 times per session. After you have been warned 5 times, you can permanently disable future warnings by unchecking the ╥Warn About Too Long Signatures╙ checkbox. This checkbox is disabled until this minimum number of warnings have been shown. Note that if you choose to post with a long signature, that signature will always be shown in your message window. You can't choose to hide a long signature.
  462.  
  463. Part Six: Newsgroup Settings
  464.  
  465. Introduction
  466.  
  467. Newsgroups settings are a powerful feature of Yet Another NewsWatcher. They let you tailor the behavior of the program on a newsgroup-by-newsgroup basis. In effect, you can have custom preference settings for any newsgroup.
  468.  
  469. Clicking on the newsgroup settings icon button in a group window displays the ╥Newsgroup Settings╙ dialog. This dialog is used to create new settings and edit or delete old ones.
  470.  
  471. 
  472.  
  473. Naming of newsgroup settings is similar to that of regional and local filters. A settings named ╥comp.sys.mac.app╙ is a local setting that will apply custom settings just to that one newsgroup. A settings named ╥comp.╙ is a regional setting that can be applied to all the newsgroups in the comp. hierarchy. Note that there's no special global settings named ╥.╙ as there is for filters, because the purpose is served by the regular preference settings.
  474.  
  475. Searching for an applicable newsgroup setting when opening a subject window, etc. is done in the opposite order that filters are searched for. As an example, suppose a subject window for the newsgroup comp.sys.mac.apps is being opened. The program first looks to see if there's a newsgroup setting that exactly matches the group name comp.sys.mac.apps. If there is, that setting is used. Otherwise the program checks to see if there's a regional setting named ╥comp.sys.mac.╙ and if so it is used. If not, a check for ╥comp.sys.╙ is done, and so forth. Also unlike filters, newsgroup settings are not applied in succession. The first matching newsgroup setting is used, and no others. If there's no match, the preference settings are used.
  476.  
  477. Editing a newsgroup setting is done in a three pane dialog that's similar to the preferences dialog. Each pane displays the settings for a certain kind of window. The ╥Subject Options╙ panel is used to set the options for subject windows. This can be handy for speeding up newsreading and reducing subject window clutter. For example, for binary newsgroups you can choose to show line counts and sort by author. For discussion newsgroups you can omit showing line counts and sort by subject.
  478.  
  479. 
  480.  
  481. A second pane is used to set the options for article windows. This can be very useful if you subscribe to newsgroups that have different language or character set requirements.
  482.  
  483. 
  484.  
  485. The third pane sets the options for message windows. As for article windows, it may be useful to set the charset used for new messages based on the newsgroup if you post to both western European language and other language newsgroups. You can also set which personality is used by default, a very useful feature, especially if you have multiple email accounts or ISPs used to read the news. You can use a standard email address for the general posts you make, and use the local address when posting to the ISP's local newsgroups.
  486.  
  487. 
  488. It is important to note the distinction between editing a newsgroup setting selected from the list of settings in the ╥Newsgroup Settings╙ dialog as described above and editing the setting for an open subject window by clicking on the ╥Edit Newsgroup Settings╙ icon button in a subject window or choosing the ╥Edit Newsgroup Settings╙ command from the Edit menu. When you edit the settings for an open subject window you are only editing the copy of the settings used for that subject window. The items in the ╥Subject Options╙ pane are disabled as they can't be changed for the open window, and any changes made to the ╥Article Options╙ or ╥Message Options╙ panes will only be applied to new windows opened from that subject window and not to any already open article or message windows. To edit newsgroup settings so that the changes are applied to all subsequently opened windows, you must select and edit the setting from the ╥Newsgroup Settings╙ dialog.
  489.  
  490. Part Seven: Character Sets
  491.  
  492. Introduction
  493.  
  494. Yet Another NewsWatcher adds support for character transliterations other than Mac <-> Latin1.
  495.  
  496. Not everyone in the world uses the same alphabet, and not all computers have the same character sets mapped to the 256 different possible 8-bit character codes. The use of standardized character sets and transliterations helps to work around some of the problems this causes.
  497.  
  498. The earliest versions of NewsWatcher performed no character transliteration at all. That was fine, as long as both the writer of the message and the reader of the article were using Macs. When this was not true, the results would be funny looking text. For example, the sender on a Mac would use the Apple character (shift-option-K), and the receiver on an IBM PC might see some graphic character. Starting with one of then 2.0b releases, John Norstad included support for the standard and by far most commonly used character set mappings. When sending a message, the Mac to Latin1 (also known as ISO-8859-1) transliteration would be used. This maps the extended Mac characters to the closest matching standard Latin1 characters, so that when a Mac poster uses the Ä character it is translated to the appropriate matching character code in the Latin1 character set. Similarly, when receiving messages, NewsWatcher would assume that the article was written using the Latin1 character set, and would transliterate characters back to the Mac characters set using an inverse transliteration.
  499.  
  500. This works fine most of the time. It doesn╒t work well when the article being received wasn╒t in the Latin1 character set, which may happen in non-English language newsgroups.
  501.  
  502. So, like the excellent email program Eudora, and many other internet applications, Yet Another NewsWatcher adds support for additional transliteration tables. This makes it easy for third parties to customize the program for non-English languages (such as Cyrillic) without having to modify and recompile the program code, and without losing the ability to effectively post to and read English language newsgroups. Yet Another NewsWatcher also supports translator plugins, for languages (like Japanese) that require more complicated processing than just a simple transliteration of characters.
  503.  
  504. Translator files
  505.  
  506. When Yet Another NewsWatcher is first launched, it finds (and creates if necessary) a folder named ╥YA-NewsWatcher Translators╙ in the same folder as the application itself. It scans this folder for files that have the necessary ╘taBL╒ resources, loads the transliteration tables and adds the names of the tables to some transliteration menus. It also loads in the same manner any translation plugins. These appear as popup menus in a number of dialogs throughout the program, and allow the user to specify what kind of character transliteration will be performed. For those who want to create new transliteration tables, the format of these files is described the end of this section. Information on writing a plugin translator for Yet Another NewsWatcher is also available.
  507.  
  508. Preferences
  509.  
  510. There is a new Preferences dialog panel that lets the user set the default character transliteration that will be performed when displaying articles, when posting a message, and when sending a message. By default these are set to the fixed values used by older versions of Yet Another NewsWatcher (Mac to Latin1 when sending; Latin1 to Mac when receiving).
  511.  
  512. 
  513.  
  514. The default transliteration done on articles and messages can also be set for individual newsgroups by using the ╥Newsgroup Settings╙ dialog. The transliteration can also be changed when sending a message by clicking on the ╥Message Settings╙ button in message windows. Selecting ╥Article Format╙ in the View menu for an article window lets you change the font and character set mapping for the open article window. Finally, when sending a message, Yet Another NewsWatcher now also inserts proper MIME headers, indicating what character set was used.
  515.  
  516. One other common transliteration that may be useful is a Mac to US ASCII conversion. This attempts to replace non-ASCII characters in the Mac character set with the nearest matching ASCII character. For example, all the forms of accented e characters (Ä, Å, É, æ) are replaced with a plain e. This can be useful for emailing a message to a user whose email system doesn╒t handle 8-bit characters. Included with the Yet Another NewsWatcher distribution is a sample Mac to US ASCII table, located in the ╥Tables & Plugins╙ folder. Just place the file ╥Macintosh -> US ASCII╙ in the ╥YA-NewsWatcher Translators╙ folder and you╒ll be able to specify this transliteration when sending messages. Also included are a number of additional tables, thanks to Andreas Prilop, as well as Japanese and Chinese translation plugins thanks to Dan Crevier. Note that if you choose to install lots of tables and plugins, you may need to increase Yet Another NewsWatcher╒s memory allocation somewhat. In particular, all three Big5 Chinese plugins require a fair bit of additional RAM. An extra 200 kB for Yet Another NewsWatcher is recommended in this case.
  517.  
  518. Table File Format
  519.  
  520. Yet Another NewsWatcher now has a new icon for files of type ╘TABL╒ (creator ╘YANW╒, of course) that can be used for transliteration table files. However, any file in the ╥YA-NewsWatcher Translators╙ will be scanned for tables, no matter what its creator or type.
  521.  
  522. The table files are very similar but not identical in format to those used by Eudora. Table resources (type ╘taBL╒) are classified into two kinds: those used when sending, and those used when receiving. Those used for sending must have even resource ID numbers; those used for receiving must have odd resource ID numbers. This is the same convention used by Eudora.
  523.  
  524. The name of the ╘taBL╒ resource is shown in Yet Another NewsWatcher╒s popup menus, and tables are remembered by resource name, not resource number. So resource ID numbers need only be unique within a given file.
  525.  
  526. For each ╘taBL╒ resource there MUST be a matching ╘STR ╘ resource with the same ID number. The contents of the string should be the (often standardized) name of the character set it is used with. For example, both the Macintosh -> ISO-8859-1 and ISO-8859-1 -> Macintosh tables have ╘STR ╘ resources that contain the string ╥ISO-8859-1╙. When the matching table is used to transliterate a message being sent, this string is used in the MIME charset= header.
  527.  
  528. I encourage people creating additional table files to put just one pair of tables in each file. This will make it easier for users to select which tables they do or do not want to use without having lots of duplicate or unwanted tables causing confusion. Because of their design plugins only support one pair of translations per file.
  529.  
  530. Writing a Translator Plugin
  531.  
  532. For information on writing a translator plugin for Yet Another NewsWatcher, please go to:
  533.  
  534.     <ftp://ftp.boingo.com//dan/YANWPluginSDK.hqx>
  535.  
  536. Thank you!
  537.  
  538. Special thanks to Jean-Pierre Kuypers for all his help in testing the new character set transliteration features, and to Andreas Prilop and Dan Crevier for their help in making additional translators available, as well as Tetsuya Mizutori and Xiaolin Zhao for their assistance in getting the Japanese and Chinese plugins to work properly with Yet Another NewsWatcher.
  539.  
  540. Part Eight: Queued Downloading and Sending
  541.  
  542. Introduction
  543.  
  544. Many people like to take advantage of the binary posts that are found in certain newsgroups. But downloading such posts can take a long time, and can easily hog the limited transfer rates available to people using dialup connections. The same may be true for sending messages. A way is needed to make it as easy as possible to download posts or send messages while still permitting normal newsreading in other newsgroups. It's also necessary to be considerate to others (by not making excessive connections to the news server, which may also limit the number of simultaneous connections an individual can make) and to yourself (because you may need to check mail, do ftp file transfers, or web browse while downloading files).
  545.  
  546. Yet Another NewsWatcher addresses these issues with its queued downloading and sending feature. The user can choose to use an additional connection to the news server that will be opened and closed at need and used to sequentially download the binary (or text) posts that are selected for downloading and send any messages the user writes.
  547.  
  548. Preferences
  549.  
  550. The queued downloading and sending feature can be enabled or disabled by a checkbox in the ╥News Server╙ pane of the Preferences dialog:
  551.  
  552. 
  553.  
  554. When ╥Use Additional Connection for Queued Transfers╙ is checked, the program will download and send the items you have selected in the background, permitting normal newsreading to go on at the same time. If the box is not checked, items will be downloaded or sent as soon as they're chosen, and additional operations will not be possible until the download or send has been completed.
  555.  
  556. Operation
  557.  
  558. The status window now usually has two or three panes in it. The top pane shows the progress of normal reading operations or non-background downloading or sending:
  559.  
  560. 
  561.  
  562. A red indicator light is drawn just to the left of the Cancel button when a downloaded binary attachment is being decoded.
  563.  
  564. The second from the top panel is used to show what queued download or send operation is taking place, and to pause or resume queued downloading and sending:
  565.  
  566. 
  567.  
  568. The bottom panel (not shown here) is visible when the queued subject window opening option is enabled. The zoom box in the status window can also be used to toggle the window between showing just the top panel and all two or three panels.
  569.  
  570. The information shown when a download is taking place includes the subject line from the original post, the current and total number of lines for the post (when line count information is available, and for part posts the line count is the total for all the parts), the download rate, and the number of downloads or sends waiting to be performed after the current one is completed. When a messages is being sent in the background, its name and the number of pending items are displayed.
  571.  
  572. Note that the status window has two special positions where it can be anchored: to the top of the main screen (the one with the menubar) and to the bottom of the main screen. When dragged to either of these positions, other program windows will be located and zoomed so that they don't overlap the status window. If the status window is located elsewhere program windows do not consider its location when being located and zoomed. Anchored to the bottom of the main screen is a good choice for the status window location if a non-floating status window is being used, because the window will then often still be visible from other programs. This makes it easy to check on Yet Another NewsWatcher's status when you're in some other program.
  573.  
  574. When queued downloading and sending is enabled, and you select some articles for downloading, they are immediately added to a special ╥Queued Transfers╙ window. This window looks like a simplified subject window. It shows the count (the number of parts), the subject, and the lines (total for all parts) for each item to be downloaded. The leftmost column is used for a marker character that indicates the status of each item. Unmarked items are queued for downloading. Items with a checkmark were successfully downloaded. Items in red and marked with an X were not successfully downloaded. See below on how to retry such failed downloads. Queued sending of messages is handled similarly. When you click on the Send button in a message window, some initial validity checks are performed on the message. It is then saved to the special ╥YA-NewsWatcher Outbox╙ folder as a regular message file, the message is added to the ╥Queued Transfers List╙ window, and the message window is closed. An up arrow symbol in the left column indicates a queued message; while a down arrow indicates a queued download.
  575.  
  576. The ╥Queued Transfers╙ window is similar to the full group list window in that it may be hidden or shown, and it's position and hidden/shown state are remembered between newsreading sessions.
  577.  
  578. It is not necessary that downloading and sending occur immediately. If queued downloading and sending is enabled but paused (by clicking on the Pause button in the status window, which is then renamed Resume), articles to be downloaded and messages to be sent are added to the queued transfers but no downloading or sending occurs. Downloading and sending will start as soon as the Resume button is pressed. It's therefore possible to browse through newsgroups selecting articles to be downloaded without actually tying up the machine by transferring megabytes of posts from the news server. Queued downloading and sending can be resumed when its convenient. Note that any in-progress download or send is cancelled when downloading is paused. If downloading is later resumed and downloading the item is tried again, the full article and all its parts will have to be redownloaded. For a message the full message will be sent again, superseding any previous attempt.
  579.  
  580. When the program is quit or servers are changed, any successful downloads and sends are removed from the list. All others are saved to the prefs files, and restored when that prefs file is opened again. Therefore items do not have to be downloaded or sent in the same session in which they're picked. The files for any successfully sent messages are also deleted from the ╥YA-NewsWatcher Outbox╙ folder.
  581.  
  582. 
  583.  
  584. In the News menu, the menu items that are normally named ╥Mark Read╙ and ╥Mark Unread╙ are renamed ╥Mark Done╙ and ╥Mark Pending╙ for the queued transfers window. If you select a number of items in the list and choose the ╥Mark Done╙ command, any selected pending items will be marked as done with an error value of cancelled. The busy item and any items already marked done will not be affected. Similarly, if the ╥Mark Pending╙ command is chosen, any selected done items will be marked as pending and the error value reset, and other items will be left untouched.
  585.  
  586. It's possible to see what error occurred for any item marked done, and to change the folder where any retry will be saved. By double clicking on a single, done download item, the Download Info dialog is displayed:
  587.  
  588. 
  589.  
  590. This dialog displays some information about the article (the newsgroup and subject), as well as a description of any error that occurred during downloading. It shows the folder where the article was to have been saved. If the download was unsuccessful and you wish to change the folder for a later redownload attempt, you can do this by clicking on the ╥Set╔╙ button. There's also a checkbox to immediately reset the status to pending, so that a new download attempt can being immediately.
  591.  
  592. A similar dialog is displayed for a completed send item. If a message is added back to the queued messages at startup or when switching folders because it was found in the outbox folder and there was no corresponding message already in the list of queued messages, it will display a ╥rescued from outbox╙ error message. Such items are usually the result of a machine crash prior to quitting Yet Another NewsWatcher or switching servers, so that the ╥YA-NewsWatcher Transfers╙ file was not saved and sent messages deleted. In this case the message may or may not have already been sent.
  593.  
  594. Part Nine: Binary Decoding
  595.  
  596. Introduction
  597.  
  598. Yet Another NewsWatcher has a built-in decoder that handles all the methods commonly used to encode binaries in usenet posts. It can handle multiple attachments per post, as well as attachments that have erroneously been encoded multiple times. The extra checking that the decoder does makes it a bit slower than some, but it should do a better job at handling the kinds of problems often encountered with usenet binaries.
  599.  
  600. Preferences
  601. The preferences for Yet Another NewsWatcher's builtin binary decoder are located in the ╥Extracting Binaries╙ preferences panel.
  602.  
  603. The decoder can be disabled by unchecking the ╥Decode Extracted Binary Attachments╙ checkbox. In this case do decoding is attempted, and the temp files with the encoded binary attachments are simple saved to the disk with no further processing.
  604.  
  605. Often MIME Base64 encoded files will have the file creator and type information specified in the MIME headers of the file. Usually this information will then be used by Yet Another NewsWatcher's builtin decoder to set the creator and type for the decoded file. To instead use the creator specified in your Internet Config settings, check the ╥Prefer Internet Config Creators╙ checkbox. However, as described above, probable image files will always have their types assigned according to the type of image data they appear to contain, and not according to the file types specified in a MIME header.
  606.  
  607. The rules for BinHex encoding in multiple parts suggest that the start and end of each section of a BinHex attachment should have a special line of text that the decoding program can read and recognize. This makes decoding safer, since it's possible that a line of non-encoded text could be mistaken for BinHex data. Unfortunately, this standard may not be followed by some poorly written BinHex encoding software. By checking the "Use Slack BinHex Decoding Rules," you can tell Yet Another NewsWatcher's builtin decoder to perform less stringent checking of each line of text to determine whether it should be decoded ot not, allowing the program to try to decode such badly formatted files.
  608.  
  609. Comments on Base64 Decoding
  610. When performing a Base64 decode, if the program encounters a line containing name="filename.ext" or name=filename.ext or file:"filename.ext" or file:filename.ext before it finds any Base64 data, that name will be used for the decoded file. Otherwise an attempt is made to located a name for the decoded file using the Subject header line in the message. If this is unsuccessful, a name of the form untitled-nn or untitled.ext-nn will be used.
  611.  
  612. Except as noted below, Yet Another NewsWatcher does not look for or use much of the MIME header information about an attached file that may be available. For example, it isn╒t very smart about AppleDouble encoding. Most such files will decode properly, and will have the appropriate file creator, type, resources, etc., but some may not. This should rarely be a problem, since AppleDouble is not a wise choice for attachments and is seldom used for posting binaries.
  613.  
  614. Setting the Type and Creator of Decoded Files
  615. The file mapping settings of Internet Config will usually be used to assign a file type and creator to the converted file. How this is done depends on whether the file was  encoded.
  616.  
  617. For a uuencoded file, there is no information available about what  creator and type the decoded file should have. Therefore the type and creator will be set using the name of the decoded file and the file mapping settings of Internet Config. Some special handling is done for potential image files, however, as is described below.
  618.  
  619. Base64 encoded files may contain some clues indicating what should be the type and creator of the decoded file. If the MIME headers include information about the file type and creator (using the x-mac-type= and x-mac-creator= header strings), this information will be used. Otherwise, if there is a header of the form:
  620.  
  621. Content-type: image/image-type
  622.  
  623. where image-type is one of:
  624.  
  625. jpeg
  626. gif
  627. tiff
  628. pict
  629.  
  630. then the file type and creator will use the Internet Config file mapping settings for a file whose name ends in:
  631.  
  632. .jpg
  633. .gif
  634. .tif
  635. .pict
  636.  
  637. respectively. Otherwise, the actual name of the decoded file will be used in conjunction with the file mapping settings of Internet Config to set the type and creator for the decoded file, just as is done for uuencoded files. As noted above, there is a preference setting to use the Internet Config creator even when a MIME creator is found.
  638.  
  639. Files encoded with MacBinary, BinHex, AppleSingle, and AppleDouble all contain information about the original file's creator and type. This information is used to set the decoded file's creator and type.
  640.  
  641. Note that if the file mapping using Internet Config is unsuccessful (because you have not defined a mapping that matches the file name), the decoded file will appear to be a text document. You will then have to determine the appropriate file type and creator yourself, and use some other utility program (ResEdit, for example) or system extension (Snitch, for example) to change the type and creator to the appropriate values.
  642.  
  643. Finally, for files that do not contain encoded file type information, Yet Another NewsWatcher does a test on the first 4 bytes of each file it decodes to see if the file is probably a JPEG or GIF image file. If this seems to be the case, then the appropriate file type is assigned to the decoded file independent of the file type obtained from the filename extension and Internet Config or the file type indicated in a MIME header. This is done to deal with a weakness in QuickTime╒s handling of image files: QuickTime chooses the proper decoder to use based on a file╒s type and not the actual image data, and a file whose type doesn╒t match the image data will fail to be properly decoded. The image viewer built into Yet Another NewsWatcher guards agains these kinds of error, but other programs which use QuickTime to display images may not.
  644.  
  645. Comments on Uudecoding
  646. Correctly  uuencoded files should contain a line of the form:
  647.  
  648. begin nnn filename.ext
  649.  
  650. directly before the start of the uuencoded data, all on the same line. The nnn is an octal number used to set the file permissions under UNIX and similar operating systems. filename.ext is the name of the decoded file.
  651.  
  652. In some cases (typically due to an error by the encoder), the file permission number is missing. Yet Another NewsWatcher will still recognize and decode such files.
  653.  
  654. Part Ten: Binary Posting
  655.  
  656. Introduction
  657.  
  658. Yet Another NewsWatcher adds a new feature to NewsWatcher: transparent support for binary posting.
  659.  
  660. A file icon button is added to message windows, to the right of the ╥send to self╙ button. Clicking on it elicits the ╥Attached File Settings╙ dialog, used to choose a single file to attach to your post, set the encoding method, and determine how the binary file will be segmented into multiple parts. Clicking on the Send button causes the selected file to be (optionally) uuencoded, split into several sections, and sent. The keyboard shortcut for clicking on the file icon is Command-4 (just as Command-1,2,3 are shortcuts for the first three icon buttons). If queued sending is disabled, and the option key is held down when clicking on Send, etc. a dialog appears allowing just a range of sections to be sent. This is useful when reposting, as only the bad sections need to be re-sent (assuming that the encoding kind and section size are not changed).
  661.  
  662. 
  663.  
  664.  
  665. Preferences
  666.  
  667. Related to this, there are four new preference items, under ╥Message Files╙ (which was formerly named ╥Saving Messages╙ in John Norstad's version). ╥News part size in kB╙ lets you set a default value for the approximate size in kB of each section of the file being posted. ╥Mail part size in kB╙ does the same for files being emailed. Values of about 32 to 64 are reasonable. The actual number of bytes in the section will be somewhat greater, since this number does not include the header lines or any of the additional lines required to mark the start and end of segments, the encoding method, etc. Please also note that temporary system memory is used when posting files. The amount of memory required is somewhat greater than the value entered in the two ╥part size in kB╙ boxes. Using temporary memory means that you do not have to increase the memory partition of Yet Another NewsWatcher in order to send large files. In fact, since increasing the memory partition reduces the amount of memory available to the system and other applications, it reduces the amount of temporary memory available for sending attached files.
  668.  
  669. 
  670.  
  671. The two other popup menus, labeled ╥News encoding:╙ and ╥Mail encoding:╙ permit you to specify a default method for how the attached file will be encoded before posting. As noted above, these popup menus also appear in the dialog used to select a file attachment, allowing the default value to be overridden for a particular post. The available options are uuencoding (the standard internet encoding method), binhexing (appropriate for Macintosh files) and none (for plain text files).
  672.  
  673. Generally uuencoding should be used for binary posts to non-Macintosh binary newsgroups, and for binary email to non-Macintosh users. BinHex encoding may be used to email a Mac file to another Mac-using friend, or to post a Mac file to a Mac-only binary newsgroup. No encoding should be used to post or email long pure-text files.
  674.  
  675. Note that the wrap checkbox in the Message Options dialog affects how unencoded binary posts are handled. If it's checked, then the file's text will be wrapped to 80 columns. If it's not, the file's text will still be wrapped to 1000 columns (which was chosen because that's the guaranteed lower limit for maximum line lengths for mail servers).
  676.  
  677. The name of the file, and the part number, will be prepended to whatever subject line you entered in the message window. For example:
  678.  
  679. Subject: My test post
  680.  
  681. would become when sent:
  682.  
  683. Subject: -Jupiter.gif [0/1] My test post
  684.  
  685. etc. if you were posting a file named Jupiter.gif. The text entered in the body of the message window becomes the descriptive information supplied in part 0 of the binary post.
  686.  
  687. Please note that binary attachments should only be posted to binary newsgroups. Most newsgroups are intended only for discussion, and binary posts are not welcome in such groups.
  688.  
  689. Part Eleven: Scripting
  690.  
  691. Yet Another NewsWatcher adds a number of new Apple Events to NewsWatcher. These events allow users to write scripts that get the header or body text for an open article window, or get or set the header or body text or attached file for an open message window, or create and send a new message, etc. There is also an Apple Event that allows a script to determine if Yet Another NewsWatcher is busy performing a long operation.
  692.  
  693. For the getmessagepart/setmessagepart events, the name of the header should be the name of one of the headers visible in a message window, all in lower case, without the colon at the end, i.e.:
  694.  
  695.     subject
  696.     newsgroups
  697.  
  698. The empty string is used to designate the message body, as in:
  699.  
  700. tell application "YA-NewsWatcher"
  701.     setmessagepart "sample body text" messagePart ""
  702. end tell
  703.  
  704. Finally, to specify the contents of the ╥extra mail╙ and ╥extra news╙ headers, use the special names:
  705.  
  706.     extramail
  707.     extranews
  708.  
  709. For the newmessage event, the various sending options have different defaults. byNews defaults to true; bymail defaults to false; and bySelf defaults to the usual preferences setting. To obtain different behavior you should set the various sending options explicitly in your script.
  710.  
  711. For the setmessageattachment event, the default values for the various encoding methods and sizes are the current values used for the message window. Unless they've previously been set otherwise, this means the values et in the Preferences dialog.
  712.  
  713. YA-NewsWatcher Suite
  714.  
  715. getfullmessage: Get the complete text for a message window.
  716.     getfullmessage
  717.         [windowName  string]  -- Name of message window (defaults to 
  718.             topmost message window).
  719.         [doWrap  boolean]  -- Wrap the body and signature text (defaults to false).
  720.     Result: string  -- The complete text of the message, formatted as for printing.
  721.  
  722. getmessagepart: Get the body or header text for a message window.
  723.     getmessagepart
  724.         messagePart string  -- The name of the header to return, or the 
  725.             empty string to return the body text.
  726.         [windowName  string]  -- Name of message window (defaults to 
  727.             topmost message window).
  728.         [doWrap  boolean]  -- Wrap the text (if it's the body or signature; 
  729.             defaults to false).
  730.     Result: string  -- The requested body or header text for a message window.
  731.  
  732. setmessagemailcopy: Set the Mail Copy option for a message window.
  733.     setmessagemailcopy
  734.         mailCopyType  posterMailCopy/nobodyMailCopy/omitMailCopy -- 
  735.             The type of Mail-Copies-To header to include in the message.
  736.         [windowName  string]  -- Name of message window (defaults to 
  737.             topmost message window).
  738.  
  739. setmessagepart: Set the body or header text for a message window.
  740.     setmessagepart string  -- The text to place in the body or header of the 
  741.         message window, replacing any previous text.
  742.         messagePart string  -- The name of the header to replace, or the 
  743.             empty string to replace the body text. (Note: attempts to replace 
  744.             ╥from╙ are ignored).
  745.         [windowName  string]  -- Name of message window (defaults to 
  746.             topmost message window).
  747.  
  748. setmessagepersonality: Set the personality for a message window.
  749.     setmessagepersonality
  750.         personalityName  string  -- The name of the personality to use.
  751.         [windowName  string]  -- Name of message window (defaults to 
  752.             topmost message window).
  753.  
  754. setmessageattachment: Set the file attachment for a message window.
  755.     setmessageattachment
  756.         [attachedFile  alias]  -- The file to send as an attachment. If 
  757.             no file is specified, any existing attachment is removed.
  758.         [windowName  string]  -- Name of message window (defaults to 
  759.             topmost message window).
  760.         [mailEncode  noEncode/uuEncode/binEncode]  -- Encoding method 
  761.             for emailed attachment.
  762.         [newsEncode  noEncode/uuEncode/binEncode]  -- Encoding method 
  763.             for posted attachment.
  764.         [mailSize  integer]  -- Size of emailed attachment segments in kB.
  765.         [newsSize  integer]  -- Size of posted attachment segments in kB.
  766.  
  767. sendmessage: Send a message window.
  768.     sendmessage
  769.         [windowName  string]  -- Name of message window (defaults to 
  770.             topmost message window).
  771.  
  772. newmessage: Open a new message window.
  773.     newmessage
  774.         [byMail  boolean]  -- True if the message is to be emailed.
  775.         [byNews boolean]  -- True if the message is to be posted.
  776.         [bySelf  boolean]  -- True to email a copy to self.
  777.  
  778. getfullarticle: Get the complete text (with the current binary 
  779.     truncation setting) of an article window.
  780.     getfullarticle
  781.         [windowName  string]  -- Name of article window (defaults to 
  782.             topmost article window).
  783.     Result: string  -- The complete text (with the current binary 
  784.         truncation setting) of the article window.
  785.  
  786. getarticlepart: Get the body or header text for an article window.
  787.     getarticlepart
  788.         articlePart string  -- The name of the header to return, 
  789.             or the empty string to return the body text.
  790.         [windowName  string]  -- Name of article window (defaults to 
  791.             topmost article window).
  792.     Result: string  -- The requested body or header text for an 
  793.         article window.
  794.  
  795. getbusy: Determine if the program is busy performing a long operation.
  796.     getbusy
  797.     Result: boolean -- The program╒s busy state.
  798.  
  799. Sample Script
  800.  
  801. As an example of using the scripting support in Yet Another NewsWatcher, here's a simple script written by John Moreno.
  802.  
  803. --  example script to forward a post to a specific address 
  804. --  doesn't keep the full headers but that would be easy enough to add
  805. --  DOES retain the list of newsgroups the message was posted to
  806. tell application "YA-NewsWatcher"
  807.    set oldbod to getarticlepart articlePart ""
  808.    set oldnews to getarticlepart articlePart "Newsgroups"
  809.    set oldsubject to getarticlepart articlePart "Subject"
  810.    set newsubject to "FWD: " & oldsubject
  811.    set mid to getarticlepart articlePart "Message-Id"
  812.    set inreplyto to "In-Reply-To: " & mid
  813.  
  814.    newmessage with byMail without byNews
  815.    setmessagemailcopy mailCopyType nobodyMailCopy -- news only, but why not
  816.    setmessagepersonality personalityName "mail"
  817.    setmessagepart oldbod messagePart ""       -- set the body
  818.    setmessagepart "Newsgroups: " & oldnews messagePart "extramail"
  819.    setmessagepart "X-Comments: Above Newsgroups, yes?" & return messagePart "extramail"
  820.    setmessagepart "Posted-And-Mailed: no" & return messagePart "extramail"
  821.    setmessagepart inreplyto & return messagePart "extramail"
  822.    set sig to "John Moreno" & return & "says hi."
  823.    setmessagepart sig messagePart "signatureField" -- set the sig
  824.    setmessagepart "Test Person <test@domain.is.invalid>" messagePart "to"
  825.    setmessagepart newsubject messagePart "subject"
  826. -- sendmessage  windowname newsubject  -- uncomment this line to send too
  827. end tell
  828.  
  829.